Thisquestion告诉我如何测试来自RSpec模型和Controller规范的记录器语句。不幸的是,它似乎不适用于功能规范。使用此代码:#controller.rbdefactionlogger.info'foobar'end#spec.rbscenario'loggingshouldwork'doexpect(Rails.logger).toreceive(:info).with('foobar')visitaction_pathend我得到错误:Failure/Error:visitaction_path#received:infowithunexpectedargument
当使用ActiveRecord在RubyonRails2.3中运行RSpec测试时,数据库会回滚到每个示例之后的before:allblock之后的状态(itblock).但是,我想说明一个对象的生命周期,这意味着一个一个地检查大量示例,更改状态并测试后置条件。这对于回滚行为是不可能的。所以澄清一下:describeMyModelbefore:all{@thing=MyModel.create}it"shouldbesettable"dolambda{@thing.a_number=42}.should_notraise_exceptionendit"shouldrememberthi
classAincludeLogginglog_to'whatever'end我想测试log_to方法是否使用正确的参数调用。但正如您可能已经猜到的那样,log_to方法来自Logging模块,并在类加载时被调用。如何编写规范或自定义匹配器来检查log_to'whatever'是否被调用?即使我在classA上模拟log_to方法,规范中也没有办法查看它是否会在类加载期间被调用时被调用。我尝试删除常量并再次加载它似乎不起作用。想法? 最佳答案 这可能应该位于与测试A类大部分功能的规范文件不同的规范文件中:describe'A'doi
我正在使用NetBeans作为我的IDE创建一个新的rubygem。初始项目结构包含一个带有gem规范和其他rake任务的Rakefile。我的问题是,将gem规范放在Rakefile中与将其放在.gemspec文件中有什么区别?在何处声明规范是否有最佳实践?每个gem是否还应该包含一个gemspec文件,或者Rakefile中的所有内容是否足够? 最佳答案 在你的Rakefile中有一个任务来为你构建一个gem在大多数情况下都很好。然而,我更喜欢在项目根目录中有一个gemspec文件,因为大多数人希望这些设置在那里,而不是埋在
我想使用HPSTRjekyll主题,当我执行jekyllserve时,终端向我抛出错误:/Library/Ruby/Gems/2.0.0/gems/bundler-1.10.3/lib/bundler/spec_set.rb:92:in`blockinmaterialize':Couldnotfindcoffee-script-source-1.9.1inanyofthesources(Bundler::GemNotFound)from/Library/Ruby/Gems/2.0.0/gems/bundler-1.10.3/lib/bundler/spec_set.rb:85:in`m
这可能是个愚蠢的问题,但我似乎找不到答案。我想为kaminari做贡献,所以我fork了repo,bundle了它,现在我想运行规范以确保一切都是绿色的。但我似乎无法让它发挥作用:bin/rakespec/Users/Ksoltysiak/.rbenv/versions/1.9.3-p125/bin/ruby-Srspecspec/config/config_spec.rbspec/helpers/action_view_extension_spec.rbspec/helpers/helpers_spec.rbspec/helpers/sinatra_helpers_spec.rbsp
我正在尝试使用辅助模块中的方法,但rspec似乎无法识别spec/features下测试的辅助程序。请注意,对spec_helper.rb的唯一更改是添加了require'capybara/rspec'。我尝试将helper.rb移动到spec/support、spec/helpers和spec/features(包含我的测试的目录),但没有运气。测试一直指示辅助方法未定义。让它“工作”的唯一方法是将我的测试移动到不同的目录,例如spec/integration。但是现在capybara将无法工作(访问未定义),因为它不在spec/features中。这是我的辅助模块(authenti
在我的Ruby应用程序中,我需要处理来自用户输入的URI(实际上是IRI)str="http://उदाहरण.परीक्षा/मुख्य_पृष्ठ"我使用Addressable规范化这些,并且只存储规范化的形式:normalized=Addressable::URI.parse(str).normalizenormalized.to_s#=>http://xn--p1b6ci4b4b3a.xn--11b5bs3a9aj6g/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A5%8D%E0%A4%AF_%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%
只有在使用特定版本的ruby时才可以添加gem依赖项吗?背景:我正在研究forkofaproject使用Test::Unit::Autorunner等。它们是ruby1.8标准库的一部分,但不是1.9.1标准库的一部分,而是在“test-unit”gem中。我想添加一个依赖项,说明如果有人使用ruby1.9.1或更高版本,请安装“test-unit”gem,但如果他们使用1.8或更早版本,则不需要安装任何东西。 最佳答案 如果您查看gemspecdocumentationforadd_dependency,没有ruby版
我有使用capybara/capybara-webkit的非Javascript规范和Javascript功能规范。我有一些预期在非Javascript模式下会失败的测试,但它们都通过了。我已经在关闭Javascript的情况下在我的浏览器中尝试了该功能,但该功能确实没有按预期工作。但在capybara中,它有效。我还尝试将js:false添加到单个测试中,以确保我的配置中没有隐藏任何东西来打开它。规范仍然通过。seleniumgem不包含在我的Gemfile中。 最佳答案 我看到两种可能性:您的测试是正确的,但可能有一些原因导致它